In many circumstances, a robot must acquire information about objects and its location within the surroundings. After the robot is placed in a new environment or changes in the environment occur, the robot must detect objects and locate the objects using one or more sensors. Based on sensor inputs, the robot determines a spatial relationship between the objects in the environment and performs various tasks associated with the objects. In some robots, the robots generate occupancy maps that store coordinates of various objects in the environment. The robots then use information in the occupancy maps in conjunction with the sensor inputs to perform various operations on objects in the environment.
After the location and the orientation of the flat surface are identified, the location and attributes of the object (e.g., width and height, and location of object on table's surface) must be determined in order to perform any actions on the objects placed on the flat surface. After the location of the object is determined, robotic manipulations such as grabbing or pushing may be performed on the object. Some robotic manipulations also require identification of the object. For example, when the robot is instructed to pick up a certain object from a table having two or more objects placed thereon, the robot must discern which object is the target object and then plan motions accordingly.
Conventional methods for detecting and localizing objects use stereoscopic cameras or time-of-flight depth sensors. In these methods, the depth information is obtained from the stereoscopic cameras or depth sensors. Then data-fitting is performed to find a model that fits the profile in the depth information. Once a fitting model is found, a three dimensional pose and orientation of the object is estimated, usually using an optimization method.